﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;
using IBatisNet.DataMapper;
using TumbaloSoft.Helpers.QueryObjects;
using TumbaloSoft.Models;

namespace TumbaloSoft.Helpers
{
    public class HelperEdificio
    {
        public static int insert(TumbaloSoft.Models.Edificio edificio)
        {
            Mapper.Instance().Insert("EdificioInsert", edificio);
            return 0;
        }
        public static void update(TumbaloSoft.Models.Edificio edificio)
        {
            Mapper.Instance().Update("EdificioUpdate", edificio);
        }

        //Eliminacion Logica
        public static void delete(TumbaloSoft.Models.Edificio edificio)
        {
            Mapper.Instance().Update("EdificioDelete", edificio);
        }
        public static Edificio selectById(int id)
        {
            IList edificios = Mapper.Instance().QueryForList("EdificioSelectById", id);
            if (edificios.Count == 0) return null;
            Edificio edificio = (Edificio)(edificios[0]);
            edificio.prDistrito = HelperDistrito.selectById(edificio.prDistrito.prIdDistrito);
            return edificio;
        }



        public static Edificio selectByIdAll(int id)
        {
            IList edificios = Mapper.Instance().QueryForList("EdificioSelectByIdAll", id);
            if (edificios.Count == 0) return null;
            Edificio edificio = (Edificio)(edificios[0]);
            edificio.prDistrito = HelperDistrito.selectById(edificio.prDistrito.prIdDistrito);
            return edificio;
        }



        public static IList selectAll()
        {
            return Mapper.Instance().QueryForList("EdificioSelectAll", null);
        }
        public static int selectMaxCodigo()
        {
            return (int)Mapper.Instance().QueryForObject("EdificioSelectMaxCodigo", null);
        }
        public static IList buscar(BusquedaEdificio EdificioBuscar)
        {
            return Mapper.Instance().QueryForList("EdificioBuscar", EdificioBuscar);
        }

        public static int selectCountActivos()
        {
            return (int)Mapper.Instance().QueryForObject("EdificioSelectCountActivos", null);
        }

        public static List<Edificio> selectEdificiosAdministrados()
        {
            return new List<Edificio>(Mapper.Instance().QueryForList<Edificio>("EdificiosAdministrados", null));
        }
        public static string selectLogo(int pridEdficio)
        {
            return (string)Mapper.Instance().QueryForObject("selectLogo", pridEdficio);
        }
	   public static string selectLogoPropietario(int pridPropietario)
	   {
		   return (string)Mapper.Instance().QueryForObject("selectLogoPropietario", pridPropietario);
	   }
        public static List<Edificio> selectAllEdificiosconAdministrador()
        {
            return new List<Edificio>(Mapper.Instance().QueryForList<Edificio>("EdificioSelectAllAdministrado", null));
        }

        public static Double HallarCuotaSegunAreas(int idedificio)
        {
            try
            {
                return (Double)Mapper.Instance().QueryForObject("EdificioCuotaArea", idedificio);
            }
            catch (NullReferenceException e)
            {
                return 0;
            }
        }

        public static Double HallarCuotaSegunGastos(int idedificio)
        {
            try
            {
                return (Double)Mapper.Instance().QueryForObject("EdificioCuotaGasto", idedificio);
            }
            catch (NullReferenceException e)
            {
                return 0;
            }
        }
	   public static List<Edificio> selectAdministrables(int IdAdministrador)
	   {
		   return new List<Edificio>(Mapper.Instance().QueryForList<Edificio>("EdificioSelectAdministrables", IdAdministrador));
	   }
    }
}